#[cfg(test)]
mod tests {
    use super::*;

    #[derive(HelloMacro)]
    struct Pancakes;

    #[test]
    /// 测试自定义派生宏HelloMacro
    /// 1. 通过#[derive(HelloMacro)]自动为Pancakes结构体实现HelloMacro trait
    /// 2. 生成的实现会打印包含类型名称的问候语
    /// 3. 验证宏展开后能正确调用hello_macro方法
    fn test_custom_derive_macro() {
        Pancakes::hello_macro();
    }

    macro_rules! vec_strings {
        ($($element:expr),*) => {
            vec![$($element.to_string()),*]
        };
    }

    #[test]
    /// 测试声明宏vec_strings!
    /// 1. 宏接收任意数量表达式参数
    /// 2. 将每个参数转换为字符串类型
    /// 3. 生成包含字符串元素的Vec<String>
    /// 4. 验证混合类型参数能正确转换
    fn test_declarative_macro() {
        let v = vec_strings!["a", 10, true];
        assert_eq!(v, vec!["a", "10", "true"]);
    }
}